package Study.company;

import java.util.Arrays;

public class Quickly {
    //快速排序
    public static void main(String[] args) {
        int[] arr = {36, 21, 66, 15, 27, 5, 46, 94, 13, 45, 6};
        quickSort(arr,0, arr.length - 1);
        System.out.println(Arrays.toString(arr));

    }
    public static void quickSort(int[] arr, int left, int right) {
        if (left >= right) {
            return;
        }
        int jiZhun = arr[left];
        int i = left;
        int j = right;
        while (i != j) {
            // 找到比基准值小的下标
            while (j > i && arr[j] >= jiZhun) {
                j --;
            }
            // 找到比基准值大的下标
            while (j > i && arr[i] <= jiZhun) {
                i ++;
            }
            if (i < j) {
                arr[j] = arr[i] ^ arr[j];
                arr[i] = arr[i] ^ arr[j];
                arr[j] = arr[i] ^ arr[j];
            }
        }
        if (arr[i] < jiZhun) {
            arr[left] = arr[i];
            arr[i] = jiZhun;
        }
        // 数组以 i 下标分成左边 和右边两部分   i 左边 小于 基准值  i 右边比基准值大
        // 排序左边
        quickSort(arr, left, i - 1);
        quickSort(arr, i + 1, right);

    }
}
